package com.csair.common.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

import java.util.List;
import java.util.Map;


/**
 * @author vaycent (vaycentsun@gmail.com)
 * @date 2018/6/12
 */

/***
 * Fastjson API入口类是com.alibaba.fastjson.JSON，常用的序列化操作都可以在JSON类上的静态方法直接完成。
 public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
 public static final JSONObject parseObject(String text)； // 把JSON文本parse成JSONObject
 public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
 public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
 public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
 */


public class JsonUtil {

    /**
     * @param jsonString
     * @return
     */
    public static Map<String,Object> jsonStringToMap(String jsonString){
        Map<String, Object> resultMap = JSON.parseObject(jsonString,new TypeReference<Map<String,Object>>() {});
        return resultMap;
    }





    public static String jsonToString(JSONObject jsonObj){
        return JSON.toJSONString(jsonObj);
    }
    public static JSONObject stringToJsonObject(String jsonStr){
        return JSON.parseObject(jsonStr);
    }
    public static JSONArray stringToJsonArray(String jsonStr){
        return JSON.parseArray(jsonStr);
    }
    public static <T> T stringToBean(String jsonStr,Class<T> clazz){
        return JSONObject.parseObject(jsonStr,clazz);
    }
    public static <T> List<T> stringToBeanList(String jsonStr, Class<T> clazz){
        return JSONObject.parseArray(jsonStr, clazz);
    }
    public static String beanToString(Object javaObject){
        return JSON.toJSONString(javaObject);
    }
    public static JSONObject beanToJsonObject(Object javaObject){
        return (JSONObject) JSON.toJSON(javaObject);
    }
    public static JSONArray beanToJsonArray(Object javaObject){
        return (JSONArray) JSON.toJSON(javaObject);
    }


}
